HAL OSPI callback functions migration

This section provides information about the HAL XSPI callback functions migration.

Callback functions in non-blocking modes

HAL OSPI error callback

HAL1

HAL2

HAL_OSPI_ErrorCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_ErrorCallback(hal_xspi_handle_t *hxspi);

HAL OSPI abort completed callback

HAL1

HAL2

HAL_OSPI_AbortCpltCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_AbortCpltCallback(hal_xspi_handle_t *hxspi);

HAL XSPI fifo threshold callback

HAL1

HAL2

HAL_OSPI_FifoThresholdCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_FifoThresholdCallback(hal_xspi_handle_t *hxspi);

HAL OSPI indirect mode callback functions

HAL OSPI command completed callback

HAL1

HAL2

HAL_OSPI_CmdCpltCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_CmdCpltCallback(hal_xspi_handle_t *hxspi);

HAL OSPI RX transfer completed callback

HAL1

HAL2

HAL_OSPI_RxCpltCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_RxCpltCallback(hal_xspi_handle_t *hxspi);

HAL OSPI TX transfer completed callback

HAL1

HAL2

HAL_OSPI_TxCpltCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_TxCpltCallback(hal_xspi_handle_t *hxspi);

HAL OSPI RX half completed callback

HAL1

HAL2

HAL_OSPI_RxHalfCpltCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_RxHalfCpltCallback(hal_xspi_handle_t *hxspi);

HAL OSPI TX half completed callback

HAL1

HAL2

HAL_OSPI_TxHalfCpltCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_TxHalfCpltCallback(hal_xspi_handle_t *hxspi);

HAL OSPI status flag polling mode function

HAL XSPI status match callback

HAL1

HAL2

HAL_OSPI_StatusMatchCallback(OSPI_HandleTypeDef *hospi);
HAL_XSPI_StatusMatchCallback(hal_xspi_handle_t *hxspi);

HAL OSPI memory-mapped mode function

HAL OSPI timeout callback

HAL1

HAL2

HAL_OSPI_TimeOutCallback(OSPI_HandleTypeDef *hospi);

Removed from HAL2.

The timeout event is now notified using the HAL_XSPI_ErrorCallback(hal_xspi_handle_t *hxspi) function with appropriate error code HAL_XSPI_ERROR_TIMEOUT.

Note

Error code can be retrieved from HAL_XSPI_GetLastErrorCodes().


HAL OSPI register/unregister callback functions

HAL OSPI register callback

In HAL1, the function HAL_OSPI_RegisterCallback() is used to register various OSPI callbacks through a single function with a specific callback ID, whereas, in HAL2, distinct functions are available to register each specific XSPI callback.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_TX_CPLT_CB_ID,
                          USER_OSPI_TxCpltCallback)
HAL_XSPI_RegisterTxCpltCallback(&xspi,
                                USER_OSPI_TxCpltCallback);

Rx Complete Callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_RX_CPLT_CB_ID,
                          USER_OSPI_RxCpltCallback)
HAL_XSPI_RegisterRxCpltCallback(&xspi,
                                USER_OSPI_RxCpltCallback);

Tx Half Complete Callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_TX_HALF_CPLT_CB_ID,
                          USER_OSPI_TxHalfCpltCallback);
HAL_XSPI_RegisterRxCpltCallback(&xspi,
                                USER_OSPI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_RX_HALF_CPLT_CB_ID,
                          USER_OSPI_RxHalfCpltCallback);
HAL_XSPI_RegisterRxCpltCallback(&xspi,
                                USER_OSPI_RxHalfCpltCallback);

OSPI error callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_ERROR_CB_ID,
                          USER_OSPI_ErrorCallback);
HAL_XSPI_RegisterErrorCallback(&xspi,
                               USER_OSPI_ErrorCallback);

OSPI abort callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_ABORT_CB_ID,
                          USER_OSPI_AbortCpltCallback);
HAL_XSPI_RegisterAbortCpltCallback(&xspi,
                                   USER_OSPI_AbortCpltCallback);

OSPI FIFO Threshold callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_FIFO_THRESHOLD_CB_ID,
                          USER_OSPI_FIFO_THRESHOLD_CpltCallback);
HAL_XSPI_RegisterFifoThresholdCallback(&xspi,
                                       USER_OSPI_FIFO_THRESHOLD_CpltCallback);

OSPI Command complete callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_CMD_CPLT_CB_ID,
                          USER_OSPI_Cmd_CpltCallback);
HAL_XSPI_RegisterCmdCpltCallback(&xspi,
                                 USER_OSPI_Cmd_CpltCallback);

OSPI Status match callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_STATUS_MATCH_CB_ID,
                          USER_OSPI_Status_Match_CpltCallback);
HAL_XSPI_RegisterStatusMatchCallback(&xspi,
                                     USER_OSPI_Status_Match_CpltCallback);

OSPI Timeout callback

HAL_OSPI_RegisterCallback(&ospi,
                          HAL_OSPI_TIMEOUT_CB_ID,
                          USER_OSPI_timeout_CpltCallback);
Removed from HAL2.
Use instead HAL_XSPI_RegisterErrorCallback(&xspi,
                               USER_OSPI_ErrorCallback);

HAL OSPI unregister callback

In HAL2, the unregister callback API has been removed. Instead, callbacks can be managed by re-registering the default HAL XSPI weak callbacks as needed.

Function

HAL 1

HAL 2

Tx Complete Callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_TX_CPLT_CB_ID)
HAL_XSPI_RegisterTxCpltCallback(&xspi,
                                HAL_XSPI_TxCpltCallback);

Rx Complete Callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_RX_CPLT_CB_ID)
HAL_XSPI_RegisterRxCpltCallback(&xspi,
                                HAL_XSPI_RxCpltCallback);

Tx Half Complete Callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_TX_HALF_CPLT_CB_ID);
HAL_XSPI_RegisterRxCpltCallback(&xspi,
                                HAL_XSPI_TxHalfCpltCallback);

Rx Half Complete Callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_RX_HALF_CPLT_CB_ID);
HAL_XSPI_RegisterRxCpltCallback(&xspi,
                                HAL_XSPI_RxHalfCpltCallback);

OSPI error callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_ERROR_CB_ID);
HAL_XSPI_RegisterErrorCallback(&xspi,
                               HAL_XSPI_ErrorCallback);

OSPI abort callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_ABORT_CB_ID);
HAL_XSPI_RegisterAbortCpltCallback(&xspi,
                                   HAL_XSPI_AbortCpltCallback);

OSPI FIFO Threshold callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_FIFO_THRESHOLD_CB_ID);
HAL_XSPI_RegisterFifoThresholdCallback(&xspi,
                                       HAL_XSPI_FifoThresholdCallback);

OSPI Command complete callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_CMD_CPLT_CB_ID);
HAL_XSPI_RegisterCmdCpltCallback(&xspi,
                                 HAL_XSPI_CmdCpltCallback);

OSPI Status match callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_STATUS_MATCH_CB_ID);
HAL_XSPI_RegisterStatusMatchCallback(&xspi,
                                     HAL_XSPI_StatusMatchCallback);

OSPI Timeout callback

HAL_OSPI_UnRegisterCallback(&ospi,
                            HAL_OSPI_TIMEOUT_CB_ID);
HAL_XSPI_RegisterErrorCallback(&xspi,
                               HAL_XSPI_ErrorCallback);

Related concept: Individual callback registration APIs replace global register and unregister functions